package com.coincalf.mapper;

import com.coincalf.dto.*;
import com.coincalf.entity.TurnoverOrder;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 * 成交订单 Mapper 接口
 * </p>
 *
 * @author qiang
 * @since 2018-05-12
 */
public interface TurnoverOrderMapper extends BaseMapper<TurnoverOrder> {

    /**
     * 获取最新成交价
     *
     * @param marketId 交易对ID
     * @return
     */
    BigDecimal queryCurrentPrice(@Param("marketId") Long marketId);

    /**
     * 获取成交数据（时间范围：3秒之前到现在）
     *
     * @param marketId
     * @return
     */
    TurnoverDataDTO queryTurnoverData(@Param("marketId") long marketId);

    /**
     * 获取24小时成交数据
     *
     * @param marketId 交易对ID
     * @return
     */
    TurnoverData24HDTO query24HDealData(@Param("marketId") long marketId);

    /**
     * 查询最新成交记录
     *
     * @param marketId 交易对ID
     * @return
     */
    List<TradeDealOrderDTO> selectDealOrders(@Param("marketId") Long marketId);

    /**
     * 个人用户订单管理-成交记录
     *
     * @param userId 用户ID
     * @param symbol 交易对标识符
     * @param type   类型
     * @param start  开始索引
     * @param size   每页大小
     * @return
     */
    List<DealRecordDTO> selectOrders(@Param("userId") long userId,
                                     @Param("symbol") String symbol,
                                     @Param("type") int type,
                                     @Param("start") int start,
                                     @Param("size") int size);

    /**
     * 个人用户订单管理-成交记录
     *
     * @param userId 用户ID
     * @param symbol 交易对标识符
     * @param type   类型
     * @return
     */
    long selectOrdersCount(@Param("userId") long userId,
                           @Param("symbol") String symbol,
                           @Param("type") int type);

    /**
     * 创新交易，今日成交
     *
     * @param userId 用户ID
     * @return
     */
    List<ForexTodayTurnoverDTO> selectTodayList(@Param("userId") long userId);
}
